package singleton;

/**
 * @Author 孔德成
 * @Slogan 致敬大师，致敬未来的你
 * @desc 单例模式：保证该类在内存中只有一个实例
 * <p>
 * 懒汉式3
 * 通过减小同步代码块的方式提高效率,然而却不能解决线程不安全问题
 */
public class Demo5 {
    private static Demo5 INSTANCE;

    private Demo5() {
    }

    // synchronized 锁的是 Demo5.class 对象
    public static Demo5 getInstance() {

        if (INSTANCE == null) {
            synchronized (Demo5.class) {
                // 模拟线程不安全场景
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                INSTANCE = new Demo5();
            }
        }
        return INSTANCE;
    }

    public void work() {
        System.out.println("致敬大师，致敬未来的你");
    }
}
